package mscloud.service;

import cn.hutool.core.util.StrUtil;
import com.elevenms.common.core.constant.RedisConstants;
import com.elevenms.common.core.response.ApiResponse;
import org.springframework.data.redis.core.StringRedisTemplate;

import java.util.Optional;

/**
 * @Datetime: 2025年07月23日17:29
 * @Author: Eleven52AC
 * @Description: 验证码服务
 */
public interface CaptchaGenerationStrategy {

    ApiResponse generationCaptchaCode();

    default void checkCaptcha(String code, String uuid, StringRedisTemplate stringRedisTemplate){
        if (StrUtil.isBlank(code)){
            // todo 自定义异常
            throw new RuntimeException("验证码不能为空");
        }
        String captchaKey = RedisConstants.CAPTCHA_PREFIX + Optional.ofNullable(uuid).orElse("");
        String captchaCode = stringRedisTemplate.opsForValue().get(captchaKey);
        if(StrUtil.isBlank(captchaCode)){
            // todo 自定义异常
            throw new RuntimeException("验证码已过期");
        }
        if (!code.equalsIgnoreCase(captchaCode)){
            // todo 自定义异常
            throw new RuntimeException("验证码错误");
        }
        // 成功时才删除验证码
        stringRedisTemplate.delete(captchaKey);
    }
}
